package com.farm.web.online;

import com.farm.core.sql.result.DataResult;

import java.util.HashMap;
import java.util.Map;


/**
 * 在线用户管理 非集群实现 实现该功能需要将方法： userLoginHandle()
 * userVisitHandle()加入到用户登录，和用户访问系统资源的代码中
 *
 * @author wangdong
 * @date 2012-03-01
 */
public interface OnlineUserOpInter {
    /**
     * 在线用户注册表，勿调用、勿操作
     */
    static final Map<String, Map<String, Object>> onlineUserTable = new HashMap<String, Map<String, Object>>();
    /**
     * 最近访问时间
     */
    static final String key_TIME = "TIME";
    /**
     * 用户IP
     */
    static final String key_IP = "IP";
    /**
     * 用户loginName
     */
    static final String key_LNAME = "LNAME";
    /**
     * 用户对象
     */
    static final String key_USEROBJ = "USEROBJ";
    /**
     * 用户登录时间
     */
    static final String key_LOGINTIME = "LOGINTIME";
    /**
     * 登录时长
     */
    static final String key_VISITTIME = "VISITTIME";
    /**
     * 在线用户判超时时间 （分）
     */
    static final long onlineVilaMinute = 60;


    /**
     * 用户访问handle 判断当前用户是否在线，不在线就(从session中)注销掉用户
     *
     * @param strutsSession STRUTS的session
     * @param ip            用户ip
     */
    public void userVisitHandle();

    /**
     * 用户登录时对在线用户的操作 注册在线用户
     *
     * @param httpSession session
     * @param ip          用户ip
     */
    public void userLoginHandle(Object user);

    /**
     * 查看当前在线用户
     *
     * @return
     */
    public DataResult findOnlineUser();

    /**
     * 强制用户下线
     *
     * @param loginName
     * @return
     */
    public boolean doUserDownLine(String loginName);
}
